package com.sitech.openapi.domain.user;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;

@ApiModel(value = "ProdInstAcctRel", description = "账务定制关系")
public class ProdInstAcctRel implements Serializable {

    private static final long serialVersionUID = 1L;

    // 记录帐务关系的唯一编号。
    @ApiModelProperty(value = "帐务关系标识")
    private Long prodInstAcctRelId;

    // 记录外部帐务关系标识
    @ApiModelProperty(value = "外部帐务关系标识")
    private BigDecimal extProdInstAcctRelId;

    // 为每个帐户生成的唯一编号，只具有逻辑上的含义，没有物理意义。每个帐户标识生成之后，帐户标识在整个服务提供有效期内保持不变。
    @ApiModelProperty(value = "帐户标识")
    private Long acctId;

    // 记录外部账户标识
    @ApiModelProperty(value = "外部账户标识")
    private String extAcctId;

    // 当前帐户所定制的各付款方式的优先级
    @ApiModelProperty(value = "优先级")
    private Integer priority;

    // 表达此条定制关系的支付额度类型。如全额支付，按绝对额度支付，按相对额度支付等。参见集团主数据编码规范ACC-C-0210
    @ApiModelProperty(value = "支付额度类型")
    private Long paymentLimitType;

    // 指出本条定制关系的具体额度。其中作为绝对值时，以分为单位。作为百分比时，以万分之一为单位（即表示到小数点后两位）。全额支付是为空
    @ApiModelProperty(value = "支付额度")
    private BigDecimal paymentLimit;

    // 记录额度上限，-1代表不限制。
    @ApiModelProperty(value = "额度上限")
    private Long upperAmount;

    // 生效时间,DateTime类型
    @ApiModelProperty(value = "生效时间")
    private String effDate;

    // 失效时间,DateTime类型
    @ApiModelProperty(value = "失效时间")
    private String expDate;

    // 是否默认帐户。参见集团主数据编码规范ACC-C-0044
    @ApiModelProperty(value = "是否默认帐户")
    private Long ifDefaultAccId;

    // 产品实例ID的标识,引用资源ProdInst
    @ApiModelProperty(value = "产品实例ID的标识")
    private Long prodInstId;

    // 外部产品实例ID的标识,引用资源ProdInst
    @ApiModelProperty(value = "外部产品实例ID的标识")
    private String extProdInstId;

    // 接触任务状态,LOVB=CAM-C-0004
    @ApiModelProperty(value = "状态")
    private String statusCd;

    // 状态时间,DateTime类型
    @ApiModelProperty(value = "状态时间")
    private String statusDate;

    // 备注
    @ApiModelProperty(value = "备注")
    private String remark;

    public Long getProdInstAcctRelId() {
        return prodInstAcctRelId;
    }

    public void setProdInstAcctRelId(Long prodInstAcctRelId) {
        this.prodInstAcctRelId = prodInstAcctRelId;
    }

    public BigDecimal getExtProdInstAcctRelId() {
        return extProdInstAcctRelId;
    }

    public void setExtProdInstAcctRelId(BigDecimal extProdInstAcctRelId) {
        this.extProdInstAcctRelId = extProdInstAcctRelId;
    }

    public Long getAcctId() {
        return acctId;
    }

    public void setAcctId(Long acctId) {
        this.acctId = acctId;
    }

    public String getExtAcctId() {
        return extAcctId;
    }

    public void setExtAcctId(String extAcctId) {
        this.extAcctId = extAcctId;
    }

    public Integer getPriority() {
        return priority;
    }

    public void setPriority(Integer priority) {
        this.priority = priority;
    }

    public Long getPaymentLimitType() {
        return paymentLimitType;
    }

    public void setPaymentLimitType(Long paymentLimitType) {
        this.paymentLimitType = paymentLimitType;
    }

    public BigDecimal getPaymentLimit() {
        return paymentLimit;
    }

    public void setPaymentLimit(BigDecimal paymentLimit) {
        this.paymentLimit = paymentLimit;
    }

    public Long getUpperAmount() {
        return upperAmount;
    }

    public void setUpperAmount(Long upperAmount) {
        this.upperAmount = upperAmount;
    }

    public String getEffDate() {
        return effDate;
    }

    public void setEffDate(String effDate) {
        this.effDate = effDate;
    }

    public String getExpDate() {
        return expDate;
    }

    public void setExpDate(String expDate) {
        this.expDate = expDate;
    }

    public Long getIfDefaultAccId() {
        return ifDefaultAccId;
    }

    public void setIfDefaultAccId(Long ifDefaultAccId) {
        this.ifDefaultAccId = ifDefaultAccId;
    }

    public Long getProdInstId() {
        return prodInstId;
    }

    public void setProdInstId(Long prodInstId) {
        this.prodInstId = prodInstId;
    }

    public String getExtProdInstId() {
        return extProdInstId;
    }

    public void setExtProdInstId(String extProdInstId) {
        this.extProdInstId = extProdInstId;
    }

    public String getStatusCd() {
        return statusCd;
    }

    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }

    public String getStatusDate() {
        return statusDate;
    }

    public void setStatusDate(String statusDate) {
        this.statusDate = statusDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "ProdInstAcctRel{" +
                "prodInstAcctRelId=" + prodInstAcctRelId +
                ", extProdInstAcctRelId='" + extProdInstAcctRelId + '\'' +
                ", acctId=" + acctId +
                ", extAcctId='" + extAcctId + '\'' +
                ", priority=" + priority +
                ", paymentLimitType=" + paymentLimitType +
                ", paymentLimit=" + paymentLimit +
                ", upperAmount=" + upperAmount +
                ", effDate='" + effDate + '\'' +
                ", expDate='" + expDate + '\'' +
                ", ifDefaultAccId=" + ifDefaultAccId +
                ", prodInstId=" + prodInstId +
                ", extProdInstId='" + extProdInstId + '\'' +
                ", statusCd='" + statusCd + '\'' +
                ", statusDate='" + statusDate + '\'' +
                ", remark='" + remark + '\'' +
                '}';
    }
}
